<?php

/** -----------------------------------------------------------------------------------------------
  * MAIN.PHP - Popis
  * -----------------------------------------------------------------------------------------------
  * Main je spouštěcí soubor pro celé CMS, je includován v indexu a využívá parametry adresy
  * dle kterých určuje jaký modul CMS vybrat a jakou jeho stránku vykreslit či jakou jeho akci
  * provést.
  * Výběr tříd probíhá dynamicky za pomocí __autoload, klíčovému slovu new se tak předává jenom název
  * požadované třídy, autoload ho pomocí podmínky vyhledá a vytvoří instanci třídy.
  * Main také obsahuje základní konstanty pro CMS, které definují zda je právě ve vývoji a umožnují
  * spouštění includovaných souborů.
  * Konstanta development určuje, že je CMS ve vývoji, vypisují se tak okamžitě všechny chybové
  * hlášky a vzniklé stavy, které mohou dopomoci k odstranění chyby. V uživatelském stavu se 
  * všechny chyby zaznamenávají do error.log.
  *
  * -----------------------------------------------------------------------------------------------
  * Informace o souboru
  * -----------------------------------------------------------------------------------------------
  * Autor: Zechy
  * Poslední update: 29.11.2012
  *
  */

# --------------------------------------------------------------------------------------------------------------------------
# Základní konstanty
# --------------------------------------------------------------------------------------------------------------------------
define("DEVELOPMENT", true); # Definuje zda je CMS ve vývoji nebo v uživatelském použití
define("INCLUDE", true);		 # Ochrana proti otevření souborů mimo EasyCMS
define("BETA", true);				 # Je-li verze označena jako beta nabízí uživateli možnost odesílání chyb přímo vývojovému týmu
define("DEMO", false);			 # Konstanta určuje zda se jedná o webové demo nebo ne - Automaticky tak zakazuje nežádoucí
														 # akce od uživatelů zkoušející CMS na webu
# --------------------------------------------------------------------------------------------------------------------------
# Jazykové nastavení CMS
# --------------------------------------------------------------------------------------------------------------------------
$settings = new settings;
$lang = $settings->get_setting("nastaveni_systemu", "jazyk");
include "scripts/langset/".$lang.".php";

# --------------------------------------------------------------------------------------------------------------------------
# Základní funkce
# --------------------------------------------------------------------------------------------------------------------------
function setReporting() # Nastavení reportování chyb
{
	if(DEVELOPMENT == true) 
	{
		error_reporting(E_ALL);
		ini_set('display_errors', 'On');
	} 
	else 
	{
		error_reporting(E_ALL);
		ini_set('display_errors', 'Off');
		ini_set('log_errors', 'On');
		ini_set('error_log', ROOT . DS . "tmp" . DS . "error.log");
	}
}

function main() # Spouštění procedury vykreslení stránky a provedení akcí
{
	$modul = isset($_GET["modul"]) ? $_GET["modul"] : "index";

	$template = new template;
	$controller = new controller($modul);

	$template->header();
	$template->menu();

	if($modul == "index")
	{
		$controller->render_index();
	}
	else
	{
		if(isset($_GET["subpage"])) $controller->render($_GET["subpage"]);
		else if(isset($_GET["action"])) $controller->exe_action($_GET["action"]);
		else $controller->render("index");
	}

	$template->footer();
}

function __autoload($class) # Autoloader tříd dle jejich názvu
{
	$modul = isset($_GET["modul"]) ? $_GET["modul"] : "index";

	if(file_exists(ROOT . DS . "application" . DS . $modul . DS . $class .".class.php"))
	{
		require_once ROOT . DS . "application" . DS . $modul . DS . $class .".class.php";
	}
	else if(file_exists(ROOT . DS . "library" . DS . $class .".class.php"))
	{
		require_once ROOT . DS . "library" . DS . $class .".class.php";
	}
	else if(file_exists(ROOT . DS . "application" . DS . $class .".class.php"))
	{
		require_once ROOT . DS . "application" . DS . $class .".class.php";
	}
	else
	{
		$template = new template;
		$template->header();
		$template->menu();
		echo "
			<p class='chyba'><b>Při vytváření objektu pro práci se vyskytla chyba</b><br>
			- Umístění dané třídy nebylo nalezeno nebo třída neexistuje.
			</p>
		";
		$template->boxes();
		$template->footer();
	}
}

# --------------------------------------------------------------------------------------------------------------------------
# Spouštění funkcí
# --------------------------------------------------------------------------------------------------------------------------
setReporting();		 # Nastavení reportování
main();						 # Hlavní spouštěcí funkce

?>